package io.github.wslxm.springbootplus2.oauth2test.api;

import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import io.github.wslxm.springbootplus2.utils.XjOauth2Util;

import java.util.*;

/**
 * Oauth2 调用加签接口测试类
 *
 * <P>
 *   当前使用 Hutool 的 HttpRequest 请求工具类进行模拟请求
 * </P>
 *
 * @author wangsong
 * @date 2023/10/08
 */
public class Oauth2ApiTest {

    /**
     * query 参数加签请求测试 (当前测试使用 get 请求)
     * <P>
     * 请求参数/ query
     * <P/>
     */
    public static void queryTest() {
        // 请求参数
        Map<String, Object> reqParams = new HashMap<>();
        reqParams.put("name", "");
        reqParams.put("age", "");
        reqParams.put("disable", "");
        reqParams.put("time", "2023-01-01 00:00:00,2023-01-05 00:00:00");
        // 加签
        Long timestamp = System.currentTimeMillis();
        String sign = XjOauth2Util.querySign(reqParams, timestamp);
        // 发起请求
        String respBody = HttpRequest.get("http://127.0.0.1:9048/api/oauth2/test/gcTest1/findPage")
                .header("sign", sign)
                .header("timestamp", timestamp.toString())
                .form(reqParams)
                .execute().body();
        // 打印响应数据
        System.out.println(respBody);
    }


    /**
     * body 参数加签请求测试 (当前测试使用 post 请求)
     * <P>
     * 请求参数/ body
     * <P/>
     */
    public static void bodyTest() {
        // 请求参数
        Map<String, Object> reqBody = new HashMap<>();
        reqBody.put("name", "wangsong");
        reqBody.put("age", "1");
        reqBody.put("sex", "22");
        reqBody.put("like", "古筝,宅舞");
        // 加签
        Long timestamp = System.currentTimeMillis();
        String sign = XjOauth2Util.bodySign(reqBody, timestamp);
        // 发起请求
        String respBody = HttpRequest.post("http://127.0.0.1:9048/api/oauth2/test/gcTest1")
                .header("sign", sign)
                .header("timestamp", timestamp.toString())
                .body(JSON.toJSONString(reqBody))
                .execute().body();
        // 打印响应数据
        System.out.println(respBody);
    }


    public static void main(String[] args) {
        queryTest();
        // bodyTest();
    }
}
